package com.zs.blog.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zs.blog.model.dto.ApplyFriendLinkDTO;
import com.zs.blog.model.dto.AuditFriendLinkDTO;
import com.zs.blog.model.dto.FriendLinkSearchDTO;
import com.zs.blog.model.dto.RemoveFriendLinkDTO;
import com.zs.blog.model.entity.FriendLink;
import com.zs.blog.model.vo.FriendLinkListVO;
import com.zs.blog.model.vo.PageInfoVO;

/**
 * @Title: IFriendLinkService
 * @Author zs
 * @Package com.zs.blog.service
 * @Date 2025/6/3 22:17
 * @description: 友链服务层接口
 */
public interface IFriendLinkService extends IService<FriendLink> {
    /**
     * 获取分页的友链列表
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @return 分页的友链列表
     */
    PageInfoVO<FriendLinkListVO> listFriendLink(Long pageNum, Long pageSize);

    /**
     * 下架友链(携带原因)
     *
     * @param removeFriendLinkDTO 下架友链的ID以及下架原因
     */
    void deleteFriendLink(RemoveFriendLinkDTO removeFriendLinkDTO);

    /**
     * 通过搜索条件查询分页的友链列表
     *
     * @param friendLinkSearchDTO 友链搜索条件实体类
     * @return 分页的友链列表
     */
    PageInfoVO<FriendLinkListVO> listFriendLinkBySearchCondition(FriendLinkSearchDTO friendLinkSearchDTO);

    /**
     * 审核友链
     *
     * @param auditFriendLinkDTO 审核友链(友链ID和状态)实体类
     */
    void auditFriendLink(AuditFriendLinkDTO auditFriendLinkDTO);

    /**
     * 申请友链
     *
     * @param applyFriendLinkDTO 申请友链参数实体类
     */
    void applyFriendLink(ApplyFriendLinkDTO applyFriendLinkDTO);
}
